import { request } from "@/api";

// 公共接口路径常量
const API_PATHS = {
  PAPER: '/user/paper',
  PAPER_QUESTION: '/user/paper-question',
};

/*
* 试卷管理相关接口
​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​**/


/*
* 创建空试卷
* 参数paper需包含：
*   paperName   试卷名称
*   description 试卷描述
* 需要Authorization请求头携带token
*/
function createPaper(paper) {
    return request('post', `${API_PATHS.PAPER}/add`, paper);
}

/*
* 创建试卷并添加题目
* 参数paper需包含：
*   paperName   试卷名称
*/
function createPaperWithQuestions(paper) {
    return request('post', `${API_PATHS.PAPER}/add-paper-and-question`, paper);
}

/*
* 修改试卷信息
* 参数paper需包含：
*   paperId     试卷ID（必填）
*   其他字段为可选修改项
* 需要Authorization请求头携带token
*/
function updatePaper(paper) {
    return request('post', `${API_PATHS.PAPER}/update`, paper);
}

/*
* 删除试卷
* 参数params需包含：
*   paperId 试卷ID
* 需要Authorization请求头携带token
*/
function deletePaper(params) {
    return request('post', `${API_PATHS.PAPER}/delete`, params);
}

/*
* 获取试卷详情
* 参数params需包含：
*   paperId 试卷ID
*/
function getPaperDetail(params) {
    return request('get', `${API_PATHS.PAPER}/get`, params);
}

/*
* 获取用户所有试卷
* 需要Authorization请求头携带token
*/
function getUserPapers() {
    return request('get', `${API_PATHS.PAPER}/list-user-paper`);
}

/*
* 分页查询试卷
* 参数params需包含：
*   paper       筛选条件对象（可选）
*   pageNum     当前页码（默认1）
*   pageSize    每页条数（默认1）
* 需要Authorization请求头携带token
*/
function listPapers(params) {
    return request('get', `${API_PATHS.PAPER}/list`, params);
}

// 发布考试的方法
// examName 考试的名称
// type 考试的类型
// paperId 试卷的id
function publishPapaer(params){
    return request('post',`${API_PATHS.PAPER}/publish`,params)
}

/*
* 导出试卷元数据
* 参数params需包含：
*   paperId 试卷ID
*/
function exportPaper(params) {
    return request('get', `${API_PATHS.PAPER}/export-paper`, params);
}

/*
* 试卷题目管理相关接口
​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​*​**​**/

/*
* 添加题目到试卷
* 参数paperQuestion需包含：
*   paperId     试卷ID
*   questionId  题目ID
*   order       题目顺序
*   score       题目分值
*/
function addPaperQuestion(paperQuestion) {
    return request('post', `${API_PATHS.PAPER_QUESTION}/add`, paperQuestion);
}

/*
* 批量添加题目到试卷
* 参数paperQuestions为题目数组
* 每个元素需包含：
*   paperId     试卷ID
*   questionId  题目ID
*   order       题目顺序
*   score       题目分值
*/
function batchAddPaperQuestions(paperQuestions) {
    return request('post', `${API_PATHS.PAPER_QUESTION}/batch-add`, paperQuestions);
}

/*
* 获取试卷题目详情
* 参数params需包含：
*   paperQuestionId 试卷题目ID
*/
function getPaperQuestionDetail(params) {
    return request('get', `${API_PATHS.PAPER_QUESTION}/get-paper-question`, params);
}

/*
* 获取试卷所有题目
* 参数params需包含：
*   paperId 试卷ID
*/
function getPaperQuestions(params) {
    return request('get', `${API_PATHS.PAPER_QUESTION}/get-paper-questions`, params);
}

/*
* 删除单个试卷题目
* 参数params需包含：
*   paperQuestionId 试卷题目ID
*   paperId         试卷ID
*/
function deletePaperQuestion(params) {
    return request('post', `${API_PATHS.PAPER_QUESTION}/delete`, params);
}

/*
* 删除试卷所有题目
* 参数params需包含：
*   paperId 试卷ID
*/
function clearPaperQuestions(params) {
    return request('post', `${API_PATHS.PAPER_QUESTION}/delete-all`, params);
}

/*
* 更新试卷题目信息
* 参数paperQuestion需包含：
*   paperQuestionId 试卷题目ID（必填）
*   其他字段为可选修改项
*/
function updatePaperQuestion(paperQuestion) {
    return request('post', `${API_PATHS.PAPER_QUESTION}/update`, paperQuestion);
}

// /*
// * 暂未实现的接口
// * （原/add-paper-and-question接口）
// */
// function createPaperWithQuestions() {
//     return request('post', `${API_PATHS.PAPER}/add-paper-and-question`);
// }

// 统一导出所有接口和路径常量
export {
    API_PATHS,
    createPaper,
    updatePaper,
    deletePaper,
    getPaperDetail,
    getUserPapers,
    listPapers,
    exportPaper,
    addPaperQuestion,
    batchAddPaperQuestions,
    getPaperQuestionDetail,
    getPaperQuestions,
    deletePaperQuestion,
    clearPaperQuestions,
    updatePaperQuestion,
    createPaperWithQuestions,
    publishPapaer
};